import request from '../utils/Request.js';

/**
 * 通知管理API模块
 */
const noticeApi = {
    /**
     * 获取通知列表
     * @param {Object} [params] - 查询参数
     * @param {number} [params.page=1] - 页码
     * @param {number} [params.pageSize=10] - 每页数量
     * @param {string} [params.title] - 通知标题模糊搜索
     * @param {number} [params.is_important] - 是否重要消息: 0-普通 1-重要
     * @param {number} [params.notice_status] - 消息状态: 1-全部人可见 2-企业可见 3-市可见 4-省可见
     * @param {string} [params.publisher] - 发布人
     * @param {string} [params.start_time] - 生效开始时间
     * @param {string} [params.end_time] - 生效结束时间
     * @param {number} [params.status] - 状态: 0-删除 1-正常 2-草稿
     * @returns {Promise} 返回通知列表
     */
    getNoticeList: (params = {}) => {
        // 设置默认参数
        const defaultParams = {
            page: 1,
            pageSize: 10,
            ...params,
        };

        return request.get({
            url: '/notice/list',
            params: defaultParams,
        });
    },

    /**
     * 获取生效中的通知列表
     * @param {Object} [params] - 查询参数
     * @param {number} [params.page=1] - 页码
     * @param {number} [params.pageSize=10] - 每页数量
     * @param {string} [params.title] - 通知标题模糊搜索
     * @param {number} [params.is_important] - 是否重要消息: 0-普通 1-重要
     * @param {number} [params.notice_status] - 消息状态: 1-全部人可见 2-企业可见 3-市可见 4-省可见
     * @param {string} [params.publisher] - 发布人
     * @param {number} [params.status=1] - 状态: 0-删除 1-正常 2-草稿
     * @returns {Promise} 返回生效中的通知列表
     */
    getActiveNoticeList: (params = {}) => {
        // 设置默认参数
        const defaultParams = {
            page: 1,
            pageSize: 10,
            is_active: 1, // 标记为生效中
            ...params,
        };

        return request.get({
            url: '/notice/active',
            params: defaultParams,
        });
    },

    /**
     * 获取已过期的通知列表
     * @param {Object} [params] - 查询参数
     * @param {number} [params.page=1] - 页码
     * @param {number} [params.pageSize=10] - 每页数量
     * @param {string} [params.title] - 通知标题模糊搜索
     * @param {number} [params.is_important] - 是否重要消息: 0-普通 1-重要
     * @param {number} [params.notice_status] - 消息状态: 1-全部人可见 2-企业可见 3-市可见 4-省可见
     * @param {string} [params.publisher] - 发布人
     * @param {number} [params.status=1] - 状态: 0-删除 1-正常 2-草稿
     * @returns {Promise} 返回已过期的通知列表
     */
    getExpiredNoticeList: (params = {}) => {
        // 设置默认参数
        const defaultParams = {
            page: 1,
            pageSize: 10,
            is_expired: 1, // 标记为已过期
            ...params,
        };

        return request.get({
            url: '/notice/expired',
            params: defaultParams,
        });
    },

    /**
     * 查看通知详情
     * @param {string} noticeId - 通知ID
     * @returns {Promise} 返回通知详情
     */
    getNoticeDetail: (noticeId) => {
        return request.get({
            url: `/notice/${noticeId}/detail`,
        });
    },

    /**
     * 添加通知
     * @param {Object} params - 请求参数
     * @param {string} params.title - 通知标题
     * @param {string} params.content - 通知内容
     * @param {string} [params.attachment] - 附件路径
     * @param {string} [params.attachment_name] - 附件原名
     * @param {number} [params.is_important=0] - 是否重要消息: 0-普通 1-重要
     * @param {number} [params.notice_status=1] - 消息状态: 1-全部人可见 2-企业可见 3-市可见 4-省可见
     * @param {string} [params.start_time] - 生效开始时间
     * @param {string} [params.end_time] - 生效结束时间
     * @param {number} [params.status=1] - 状态: 0-删除 1-正常 2-草稿
     * @returns {Promise} 返回添加结果
     */
    addNotice: (params) => {
        return request.post({
            url: '/notice/add',
            params: params,
        });
    },

    /**
     * 删除通知
     * @param {string} noticeId - 通知ID
     * @returns {Promise} 返回删除结果
     */
    deleteNotice: (noticeId) => {
        return request.post({
            url: `/notice/${noticeId}/delete`,
        });
    },

    /**
     * 更新通知
     * @param {Object} params - 请求参数
     * @param {string} params.notice_id - 通知ID
     * @param {string} [params.title] - 通知标题
     * @param {string} [params.content] - 通知内容
     * @param {string} [params.attachment] - 附件路径
     * @param {string} [params.attachment_name] - 附件原名
     * @param {number} [params.is_important] - 是否重要消息: 0-普通 1-重要
     * @param {number} [params.notice_status] - 消息状态: 1-全部人可见 2-企业可见 3-市可见 4-省可见
     * @param {string} [params.start_time] - 生效开始时间
     * @param {string} [params.end_time] - 生效结束时间
     * @param {number} [params.status] - 状态: 0-删除 1-正常 2-草稿
     * @returns {Promise} 返回更新结果
     */
    updateNotice: (params) => {
        return request.post({
            url: '/notice/update',
            params: params,
        });
    },

    /**
     * 上传通知附件
     * @param {FormData} formData - 包含文件的FormData对象
     * @returns {Promise} 返回上传结果
     */
    uploadAttachment: (formData) => {
        return request.post({
            url: '/notice/upload',
            data: formData,
            headers: {
                'Content-Type': 'multipart/form-data',
            },
        });
    },

    /**
     * 标记通知已读
     * @param {string} noticeId - 通知ID
     * @returns {Promise} 返回标记结果
     */
    markNoticeRead: (noticeId) => {
        return request.post({
            url: `/notice/${noticeId}/read`,
        });
    },

    /**
     * 获取当前户的用通知列表
     */
    getCurrentNoticeList: (params) => {
        return request.get({
            url: '/notice/current',
            params: params,
        });
    },
};

export default noticeApi;
